package com.lingnan.blog.provider;

import com.lingnan.blog.entity.User;
import org.apache.ibatis.jdbc.SQL;
import org.springframework.util.StringUtils;

public class UserProvider extends SQL {
    //表明
    private static final String TABLE_NAME = "user";

    public String insert(User user) {
        return new SQL() {
            {
                INSERT_INTO(TABLE_NAME);
                if (!StringUtils.isEmpty(user.getId())) {
                    SET("id", "#{id}");
                }
                if (!StringUtils.isEmpty(user.getIp())) {
                    VALUES("ip", "#{ip}");
                }
                if (!StringUtils.isEmpty(user.getUsername())) {
                    VALUES("username", "#{username}");
                }
                if (!StringUtils.isEmpty(user.getPassword())) {
                    VALUES("password", "#{password}");
                }
                if (!StringUtils.isEmpty(user.getSalt())) {
                    VALUES("salt", "#{salt}");
                }
                if (!StringUtils.isEmpty(user.getNickname())) {
                    VALUES("nickname", "#{nickname}");
                }
                if (!StringUtils.isEmpty(user.getPhoto())) {
                    VALUES("photo", "#{photo}");
                }
                if (!StringUtils.isEmpty(user.getBirthday())) {
                    VALUES("birthday", "#{birthday}");
                }
                if (!StringUtils.isEmpty(user.getProfession())) {
                    VALUES("profession", "#{profession}");
                }
                if (!StringUtils.isEmpty(user.getPhone())) {
                    VALUES("phone", "#{phone}");
                }
                if (!StringUtils.isEmpty(user.getEmail())) {
                    VALUES("email", "#{email}");
                }
                if (!StringUtils.isEmpty(user.getAddress())) {
                    VALUES("address", "#{address}");
                }
                if (!StringUtils.isEmpty(user.getIntro())) {
                    VALUES("intro", "#{intro}");
                }
                if (!StringUtils.isEmpty(user.getRetime())) {
                    VALUES("retime", "#{retime}");
                }
                if (!StringUtils.isEmpty(user.getRole())) {
                    VALUES("role", "#{role}");
                }
            }
        }.toString();
    }

    public String update(User user) {
        return new SQL() {{
            UPDATE(TABLE_NAME);
            if (!StringUtils.isEmpty(user.getId())) {
                SET("id=#{id}");
            }
            if (!StringUtils.isEmpty(user.getIp())) {
                SET("ip=#{ip}");
            }
            if (!StringUtils.isEmpty(user.getUsername())) {
                SET("username=#{username}");
            }
            if (!StringUtils.isEmpty(user.getPassword())) {
                SET("password=#{password}");
            }
            if (!StringUtils.isEmpty(user.getSalt())) {
                SET("salt=#{salt}");
            }
            if (!StringUtils.isEmpty(user.getNickname())) {
                SET("nickname=#{nickname}");
            }
            if (!StringUtils.isEmpty(user.getPhoto())) {
                SET("photo=#{photo}");
            }
            if (!StringUtils.isEmpty(user.getBirthday())) {
                SET("birthday=#{birthday}");
            }
            if (!StringUtils.isEmpty(user.getProfession())) {
                SET("profession=#{profession}");
            }
            if (!StringUtils.isEmpty(user.getPhone())) {
                SET("phone=#{phone}");
            }
            if (!StringUtils.isEmpty(user.getEmail())) {
                SET("email=#{email}");
            }
            if (!StringUtils.isEmpty(user.getAddress())) {
                SET("address=#{address}");
            }
            if (!StringUtils.isEmpty(user.getIntro())) {
                SET("intro=#{intro}");
            }
            if (!StringUtils.isEmpty(user.getRetime())) {
                SET("retime=#{retime}");
            }
            if (!StringUtils.isEmpty(user.getRole())) {
                SET("role=#{role}");
            }
            WHERE("id = #{id}");
        }}.toString();
    }
}
